package cn.iocoder.yudao.module.biz.service.risk.equipmentInfo;

import java.util.*;
import javax.validation.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.biz.controller.admin.risk.equipmentInfo.vo.*;
import cn.iocoder.yudao.module.biz.controller.admin.risk.taskWork.vo.BizTaskWorkExcelVO;
import cn.iocoder.yudao.module.biz.controller.admin.risk.taskWork.vo.BizTaskWorkImportRespVO;
import cn.iocoder.yudao.module.biz.dal.dataobject.risk.equipmentInfo.BizEquipmentInfoDO;

/**
 * 设备 Service 接口
 *
 * @author 芋道源码
 */
public interface BizEquipmentInfoService {

    /**
     * 创建设备
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    String createEquipmentInfo(@Valid BizEquipmentInfoCreateReqVO createReqVO);

    /**
     * 更新设备
     *
     * @param updateReqVO 更新信息
     */
    void updateEquipmentInfo(@Valid BizEquipmentInfoUpdateReqVO updateReqVO);

    /**
     * 删除设备
     *
     * @param id 编号
     */
    void deleteEquipmentInfo(String id);

    /**
     * 获得设备
     *
     * @param id 编号
     * @return 设备
     */
    BizEquipmentInfoDO getEquipmentInfo(String id);

    /**
     * 获得设备列表
     *
     * @param ids 编号
     * @return 设备列表
     */
    List<BizEquipmentInfoDO> getEquipmentInfoList(Collection<String> ids);

    /**
     * 获得设备分页
     *
     * @param pageReqVO 分页查询
     * @return 设备分页
     */
    PageResult<BizEquipmentInfoDO> getEquipmentInfoPage(BizEquipmentInfoPageReqVO pageReqVO);

    /**
     * 获得设备列表, 用于 Excel 导出
     *
     * @param exportReqVO 查询条件
     * @return 设备列表
     */
    List<BizEquipmentInfoDO> getEquipmentInfoList(BizEquipmentInfoExportReqVO exportReqVO);

    Long getEquipmentCount();

    List<Map<String,Object>> getEquipmentPie();

    /**
     * 获得设备分页
     *
     * @param pageReqVO 分页查询
     * @return 设备分页
     */
    List<BizEquipmentInfoRespVO> getEquipmentPage(BizEquipmentInfoPageReqVO pageReqVO);

    Integer getEquipmentInfoCount(BizEquipmentInfoPageReqVO pageReqVO);

    /**
     * 批量导入用户
     *
     * @param importEquipment   导入设备设施列表
     * @return 导入结果
     */
    BizEquipmentImportRespVO importExcel(List<BizEquipmentInfoExcelVO> importEquipment);

    /**
     * 获得设备列表, 用于 Excel 导出
     *
     * @param exportReqVO 查询条件
     * @return 设备列表
     */
    List<BizEquipmentInfoExcelVO> getEquipmentInfoForExport(BizEquipmentInfoExportReqVO exportReqVO);
}
